home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).zip / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).adf / tracker.library / Demos / Dos-Info.asm < prev    next >
Assembly Source File  |  1994-04-16  |  5KB  |  205 lines

  1. ;TestProgramm für "tracker.library"
  2.  
  3. ; Testet TRK_InfoName
  4.  
  5.     NOLIST
  6.     INCLUDE "exec/LVO.i"
  7.     INCLUDE "exec/memory.i"
  8.     INCLUDE "dos/LVO.i"
  9.     INCLUDE "dos/dos.i"
  10.     INCLUDE "dos/datetime.i"
  11.     INCLUDE "dos/dosextens.i"
  12.     INCLUDE "libraries/tracker.i"
  13.     LIST
  14.  
  15. Print:    MACRO
  16.     move.l    Output,d1
  17.     move.l    #\1,d2
  18.     CALLDOS VFPrintf
  19.     ENDM
  20.  
  21. _TrackerBase:    EQUR a5
  22. _DOSBase:    EQUR a4
  23. Output:     EQUR d7
  24.  
  25. ; WB-Message ?
  26.     sub.l    a1,a1        ;a1=0->eigener Task
  27.     CALLEXEC FindTask    ;Wo darf man denn nachschauen ?
  28.     move.l    d0,a0
  29.     tst.l    pr_CLI(a0)      ;von CLI oder WB aus gestartet ?
  30.     bne    fromCLI
  31. ;von WB aus:
  32.     lea    pr_MsgPort(a0),a0
  33.     move.l    a0,-(sp)
  34.     CALLEXEC WaitPort    ;auf Start-Message warten
  35.     move.l    (sp)+,a0
  36.     CALLEXEC GetMsg ;muß nachher beantwortet werden
  37.     move.l    d0,WBenchMsg
  38.  
  39. fromCLI:
  40. ; Tracker-Library öffnen
  41.     OPENLIB TrName,3
  42.     tst.l    d0
  43.     beq    ende_all
  44.     move.l    d0,_TrackerBase
  45.     TRK_OPENSTDLIB DOS,36
  46.     tst.l    d0
  47.     beq    ende_trk
  48.     move.l    d0,_DOSBase
  49.  
  50.     tst.l    WBenchMsg
  51.     bne    fromWB
  52. ;von CLI aus -> Ausgaben ins CLI-Fenster
  53.     CALLDOS Output
  54.     move.l    d0,Output
  55.     bra    main
  56. ;von WB aus gestartet -> eigenes Window nötig
  57. fromWB: move.l    #WdName,d1
  58.     move.l    #MODE_OLDFILE,d2
  59.     CALLTRK TRK_Open
  60.     move.l    d0,Output
  61. ;---------------------------------------------------------------------------
  62. ;Haupt-Testteil
  63.  
  64. INFO:    MACRO
  65.     move.l    #\1,d1
  66.     bsr    Info
  67.     ENDM
  68.  
  69. main:    INFO    Name_1
  70.     INFO    Name_2
  71.     move.l    d0,d6
  72.     INFO    Name_3
  73.     move.l    d0,d5
  74.     move.l    d6,d1
  75.     beq    1$
  76.     bsr    Free
  77. 1$:    INFO    Name_4
  78.     move.l    d5,d1
  79.     beq    2$
  80.     bsr    Free
  81. 2$:    INFO    Name_5
  82.  
  83. ;---------------------------------------------------------------------------
  84.  
  85. ende_main:
  86. ;ggf. End-Botschaft und Verzögerung
  87.     tst.l    WBenchMsg
  88.     beq    ende_trk
  89.     move.l    Output,d1
  90.     move.l    #GoodBye,d2
  91.     moveq    #GoodByeLen,d3
  92.     CALLDOS Write
  93.     move.l    #150,d1
  94.     CALL    Delay
  95. ;Library schließen
  96. ende_trk:
  97.     CLOSELIB _TrackerBase
  98. ende_all:
  99.     tst.l    WBenchMsg    ;war da was ?
  100.     beq    toCLI        ;na dann halt nicht
  101. ;Message zur WB zurück
  102.     move.l    WBenchMsg,a1
  103.     CALLEXEC ReplyMsg
  104. toCLI:    moveq    #0,d0
  105.     rts
  106.  
  107. ;---------------------------------------------------------------------------
  108. ; Unterprogramm: Namen untersuchen lassen
  109. ; Parameter: d1 = Adresse des Filenamens
  110. ; Ergebnis: die Info-Data-Struktur
  111.  
  112. Info:    move.l    sp,a3
  113.     move.l    d1,-(sp)
  114.     CALLTRK TRK_InfoName
  115.     tst.l    d0
  116.     bne    1$
  117.     move.l    sp,d3
  118.     Print    not_existant
  119.     move.l    a3,sp
  120.     moveq    #0,d0
  121.     rts
  122. 1$:    move.l    (sp),d1
  123.     move.l    d0,(sp)
  124. ;den ganzen Krimskrams ausgeben:
  125.     move.l    d0,a0
  126.     move.l    id_InUse(a0),-(sp)              ;10. Parameter
  127.     move.l    id_VolumeNode(a0),-(sp)         ;9. Parameter
  128.     lea    DType,a1
  129.     move.l    id_DiskType(a0),(a1)
  130.     move.l    a1,-(sp)                        ;8. Parameter
  131.     move.l    id_BytesPerBlock(a0),-(sp)      ;7. Parameter
  132.     move.l    id_NumBlocksUsed(a0),-(sp)      ;6. Parameter
  133.     move.l    id_NumBlocks(a0),-(sp)          ;5. Parameter
  134.     move.l    id_DiskState(a0),d0
  135.     cmp.l    #ID_NO_DISK_PRESENT,d0
  136.     bne    4$
  137.     pea    DS_NO_DISK_PRESENT        ;4. Parameter
  138.     bra    5$
  139. 4$:    cmp.l    #ID_WRITE_PROTECTED,d0
  140.     bne    6$
  141.     pea    DS_WRITE_PROTECTED        ;4. Parameter
  142.     bra    5$
  143. 6$:    cmp.l    #ID_VALIDATING,d0
  144.     bne    7$
  145.     pea    DS_VALIDATING            ;4. Parameter
  146.     bra    5$
  147. 7$:    cmp.l    #ID_VALIDATED,d0
  148.     bne    8$
  149.     pea    DS_VALIDATED            ;4. Parameter
  150.     bra    5$
  151. 8$:    pea    unknown             ;4. Parameter
  152. 5$:    move.l    id_UnitNumber(a0),-(sp)         ;3. Parameter
  153.     move.l    id_NumSoftErrors(a0),-(sp)      ;2. Parameter
  154.     move.l    d1,-(sp)                        ;1. Parameter: Name
  155.     move.l    sp,d3
  156.     Print    existant
  157.     move.l    -4(a3),d0
  158.     move.l    a3,sp
  159.     rts
  160. ;---------------------------------------------------------------------------
  161. ;Unterroutine: TRK_FreeFIB testen
  162. ;Parameter: d1 = Adresse des Speicherbereichs
  163. ;Ergebnis: -
  164.  
  165. Free:    movem.l d1-d3,-(sp)     ;Register sichern
  166.     move.l    d1,a1
  167.     CALLTRK TRK_FreeMem
  168.     move.l    sp,d3
  169.     movem.l (sp)+,d1-d3     ;Register zurück
  170.     rts
  171. ;---------------------------------------------------------------------------
  172. WBenchMsg:    dc.l    0
  173. DType:        dc.l    0,0
  174.  
  175. TrName: TRACKERNAME
  176.  
  177. WdName:     dc.b "CON:0/0/640/200/Info-Test für tracker.library",0
  178. GoodBye:    dc.b 10,"Bye - closing soon !",0
  179. GoodByeLen:    equ *-GoodBye
  180. Name_1:     dc.b "SYS:",0
  181. Name_2:     dc.b "S:Startup-Sequence",0
  182. Name_3:     dc.b "DF1:",0
  183. Name_4:     dc.b "ENV:",0
  184. Name_5:     dc.b "RAM:",0
  185. not_existant:    dc.b "Datei/Pfad %s kann nicht untersucht werden !"
  186. CrLf:        dc.b 10,0
  187. FreeText:    dc.b "InfoData at $%06lx freed",10,0
  188. existant:    dc.b "Datei/Pfad %s untersucht",10
  189.         dc.b "NumSoftErrors = %ld",10
  190.         dc.b "UnitNumber    = %ld",10
  191.         dc.b "DiskState     = %s",10
  192.         dc.b "NumBlocks     = %ld",10
  193.         dc.b "NumBlocksUsed = %ld",10
  194.         dc.b "BytesPerBlock = %ld",10
  195.         dc.b "DiskType      = %s",10
  196.         dc.b "VolumeNode    = $%06lx",10
  197.         dc.b "InUse         = %ld",10,0
  198. DS_WRITE_PROTECTED: dc.b "write protected",0
  199. DS_VALIDATING:    dc.b "validating",0
  200. DS_VALIDATED:    dc.b "validated",0
  201. DS_NO_DISK_PRESENT: dc.b "no_disk_present",0
  202. unknown:    dc.b "unknown",0
  203.  
  204.     END
  205.